package cci

import "time"

type ErrorResponseForCCI struct {
	Kind       string   `json:"kind"`
	ApiVersion string   `json:"apiVersion"`
	Metadata   struct{} `json:"metadata"`
	Status     string   `json:"status"`
	Message    string   `json:"message"`
	Reason     string   `json:"reason"`
	Code       int      `json:"code"`
	ErrorCode  string   `json:"errorCode"`
}

// query response
type QueryPodResp struct {
	Kind       string            `json:"kind"`
	ApiVersion string            `json:"apiVersion"`
	MetaData   QueryMetaDataResp `json:"metadata"`
	Status     Status            `json:"status"`
}

type Status struct {
	Phase             string              `json:"phase"`
	HostIP            string              `json:"hostIP"`
	PodIP             string              `json:"podIP"`
	ContainerStatuses []ContainerStatuses `json:"containerStatuses"`
}
type ContainerStatuses struct {
	Ready bool `json:"ready"`
}
type QueryMetaDataResp struct {
	Name              string               `json:"name"`
	Namespace         string               `json:"namespace"`
	SelfLink          string               `json:"selfLink"`
	Uid               string               `json:"uid"`
	ResourceVersion   string               `json:"resourceVersion"`
	CreationTimestamp time.Time            `json:"creationTimestamp"`
	Annotations       QueryAnnotationsResp `json:"annotations"`
}

type QueryAnnotationsResp struct {
	CniYangtseIoNetworkStatus  string `json:"cni.yangtse.io/network-status"`
	CriCciIoContainerType      string `json:"cri.cci.io/container-type"`
	TopologyKubernetesIoRegion string `json:"topology.kubernetes.io/region"`
	TopologyKubernetesIoZone   string `json:"topology.kubernetes.io/zone"`
	YangtseIoAllocatedEipId    string `json:"yangtse.io/allocated-eip-id"`
	YangtseIoAllocatedIpv4Eip  string `json:"yangtse.io/allocated-ipv4-eip"`
	YangtseIoEipBandwidthName  string `json:"yangtse.io/eip-bandwidth-name"`
	YangtseIoEipBandwidthSize  string `json:"yangtse.io/eip-bandwidth-size"`
	YangtseIoEipChargeMode     string `json:"yangtse.io/eip-charge-mode"`
	YangtseIoEipNetworkType    string `json:"yangtse.io/eip-network-type"`
	YangtseIoPodWithEip        string `json:"yangtse.io/pod-with-eip"`
}

type QueryStateResp struct {
	Phase string `json:"phase"`
}

type QueryNamespaceResp struct {
	Items []interface{} `json:"items"`
}

type QueryPodInfoResp struct {
	HostName       string `json:"host_name"`
	ProjectID      string `json:"project_id"`
	FleetId        string `json:"fleet_id"`
	Namespace      string `json:"namespace"`
	ScalingGroupID string `json:"scaling_group_id"`
	InstanceID     string `json:"instance_id"`
	PublicIP       string `json:"public_ip"`
	PrivateIP      string `json:"private_ip"`
	HealthState    string `json:"health_state"`
	CreateTime     string `json:"create_time"`
}

type ListPodResponse struct {
	TotalNumber int       `json:"total_number"`
	Count       int       `json:"count"`
	Instances   []PodInfo `json:"instances"`
}
type PodInfo struct {
	Name         string `json:"instance_name"`
	InstanceId   string `json:"instance_id"`
	GroupId      string `json:"group_id"`
	HealthStatus string `json:"health_status"`
	PublicIP     string `json:"public_ip"`
	PrivateIp    string `json:"private_ip"`
	CreatedAt    string `json:"created_at"`
	ActiveAt     string `json:"active_at"`
}
